Endianness(位元組序)是指多位元組資料在計算機記憶體中儲存的順序。資料的表示通常涉及多個位元組,尤其是當處理整數、浮點數和其他複雜數據結構時。Endianness 主要有 Big Endian 跟 Little Endian: 兩種形式:
0x12345678
為例:地址 | 內容
-----------------
0x00 | 0x12
0x01 | 0x34
0x02 | 0x56
0x03 | 0x78
0x12345678
為例:地址 | 內容
-----------------
0x00 | 0x78
0x01 | 0x56
0x02 | 0x34
0x03 | 0x12
在跨平台資料交換的中 Endianness 的影響顯著。不同系統之間使用的位元組序可能不相同,這關係到資料的解讀準確性。舉例來說,若一個 Big Endian 的系統接收到來自 Little Endian 系統的資料食,會因為位元組順序的差異而錯誤解釋該數據的結構。這種錯誤不僅會妨礙應用程序的正常運行,還可能引發潛在的安全風險。因此在資料傳輸和解讀過程中謹慎處理,確保資料的一致性與準確性,以提升系統的整體穩定性和安全性。
許多檔案格式(如 BMP、PNG 或某些音頻格式)在其標頭中定義了數據的位元組序。如果一個使用 Little Endian 的系統解讀一個預設為 Big Endian 的檔案,可能會導致無法正確讀取檔案內容。例如,圖像的解析度、顏色深度等資訊可能會被錯誤解讀,進而導致圖像無法正常顯示或出現扭曲。
通常指的是一組特定的字元序列,用於識別檔案的類型或格式。這些簽名(signatures)通常位於檔案的開頭部分,並且是用來幫助系統或應用程序快速判斷檔案格式的一種方法。檔案簽名對於檔案分析、資料恢復、惡意軟體檢測等尤為重要。
檔案格式識別:
檔案簽名是用於識別檔案格式的主要依據。例如,JPEG 圖像檔案通常以 FFD8
開頭,而 PNG 圖像檔案以 89504E47
開頭。這使得操作系統或應用程式能夠迅速辨識檔案類型,並適當地進行處理。
安全性檢查:
在安全性分析中,檔案簽名可以用來檢測潛在的惡意檔案。如果檔案的簽名不符合其擴展名(例如,檔案擴展名為 .exe 但簽名卻是 JPEG),這可能表明該檔案是偽裝的惡意軟體。
資料恢復:
在檔案恢復過程中,檔案簽名可幫助工具識別損壞或遺失的檔案類型,即使它們的檔案擴展名丟失或被修改。
如何查看檔案簽名:使用像 xxd 的指令,可以來查看檔案的簽名。
今天練習有關檔案格式錯誤轉正的題目
Lab - endianness-v2
題目說他不知道 challengefile
這個檔案的類型是什麼,我們先利用 xxd challengefile
這個指令來查看 file signatures。可以看到開頭熟悉又陌生,很像是 jpg 檔,但順序好像相反了
代表說這其實原本是一個 jpg 檔,那我們只需要想辦法把檔案的位元組順序倒回去,使用這個 Swap_endianness 線上工具。Data format
選擇跟原本一樣的檔案格式,然後把題目給的 challengefile
匯入 input,最後把 output 的檔案下載下來。
打開下載的圖片就是 flag 惹
今天的練習就到這邊,以下是參考資料,請搭配服用:
Big-Endian vs Little-Endian
file_signatures
位元組順序
內文如有錯誤,還請不吝指教~